package com.ruoyi.OutboundManagement.service;

import java.util.List;
import com.ruoyi.OutboundManagement  .domain.DeliveryOperation;
import com.ruoyi.OutboundManagement.domain.vo.WarningVO;

/**
 * 出库操作Service接口
 * 
 * @author admin
 * @date 2024-07-09
 */
public interface IDeliveryOperationService {

    /**
     * 新增出库操作
     *
     * @param deliveryOperation 出库操作
     * @return 结果
     */
    public int insertDeliveryOperation(DeliveryOperation deliveryOperation);

    /**
     * 查询出库操作列表
     *
     * @param materialIds 出库操作
     * @return 出库操作集合
     */
    List<DeliveryOperation> selectDeliveryOperationList(List<Long> materialIds,String materialName);


    List<DeliveryOperation> selectLingLiao(String shippingType);

    List<DeliveryOperation> selectTuiHuo(String shippingType);

    List<DeliveryOperation> selectXiaoShou(String shippingType);

    List<DeliveryOperation> selectWaiCai(String shippingType);


    /**
     * 批量删除出库操作
     *
     * @param deliveryIds 需要删除的出库操作主键集合
     * @return 结果
     */
    public int deleteDeliveryOperationByDeliveryIds(Long[] deliveryIds);

    /**
     * 删除出库操作信息
     *
     * @param deliveryId 出库操作主键
     * @return 结果
     */
    public int deleteDeliveryOperationByDeliveryId(Long deliveryId);


    /**
     * 查询质检列表
     *
     * @param zhijian 列表查询
     * @return 结果
     */
    List<DeliveryOperation> findByZhijianList(List<String> zhijian,String libraryType,String shippingType,String materialName,String createUser,String storageStatus);

    /**
     * 修改质检操作
     *
     * @param deliveryOperation 出库操作
     * @return 结果
     */
    public int updateDeliveryOperation(DeliveryOperation deliveryOperation);

    /**
     * 修改出库操作
     *
     * @param deliveryOperation 出库操作
     * @return 结果
     */
    int updateDeliveryChuKu(DeliveryOperation deliveryOperation);

    /**
     * 修改入库数量操作
     *
     * @param deliveryOperation 出库操作
     * @return 结果
     */
    int updateDeliveryRu(DeliveryOperation deliveryOperation);

    /**
     * 修改出库数量操作
     *
     * @param deliveryOperation 出库操作
     * @return 结果
     */
    int updateDeliveryChu(DeliveryOperation deliveryOperation);

    /**
     * 批量修改出库数量操作
     *
     * @param deliveryOperation 出库操作
     * @return 结果
     */
    int XiuGaiChu(DeliveryOperation deliveryOperation);

    List<DeliveryOperation> selectRuTotal(DeliveryOperation deliveryOperation);

    List<WarningVO> selectWarning(WarningVO warningVO);
}
